irq2nvic_h: don't declare irq symbols as WEAK

At least in some toolchains (e.g., Debian Jessie with gcc 4.8.3-9+11
and ld 2.24.51.20140604), declaring an irq symbol as WEAK together with
gcc -ffunction-sections / ld --gc-sections leads to the default version of
the IRQ function to be taken, rather than the user-supplied version.
This commit is contained in:
Jeff Epler 2014-12-28 19:45:12 -06:00
parent 0dd6073407
commit 87d1585159

View file

@ -121,7 +121,7 @@ def convert(infile, outfile_nvic, outfile_vectornvic, outfile_cmsis):
data['irqcount'] = max([int(x) for x in data['irqs'].keys()]) + 1
data['irqdefinitions'] = "\n".join('#define NVIC_%s_IRQ %d'%(v.upper(),int(k)) for (k,v) in irq2name)
data['isrprototypes'] = "\n".join('void WEAK %s_isr(void);'%name.lower() for name in irqnames)
data['isrprototypes'] = "\n".join('void %s_isr(void);'%name.lower() for name in irqnames)
data['isrpragmas'] = "\n".join('#pragma weak %s_isr = blocking_handler'%name.lower() for name in irqnames)
data['vectortableinitialization'] = ', \\\n '.join('[NVIC_%s_IRQ] = %s_isr'%(name.upper(), name.lower()) for name in irqnames)
data['cmsisbends'] = "\n".join("#define %s_IRQHandler %s_isr"%(name.upper(), name.lower()) for name in irqnames)