This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[msp430-elf] Interrupt vector corrupted?


Greetings,

I am working with an MSP430F5529 and I am seeing issues with the way
USCI_A1_VECT gets added to the vector table. I am not sure if the bug is
in the linker script (saw nothing obvious there), or the way binutils is
populating entries to this particular entry. I have tried to add an
entry two ways,

__attribute__((interrupt((USCI_A1_VECT)))
void uart1_isr(void) {
	/* snip */
}

and a rather obtuse one:

__asm (
      "\t.section \"__interrupt_vector_47\",\"ax\",@progbits\n\t"
      ".word uart1_isr"
);
void uart1_isr(void) {
	/* snip */
}

when performing an objdump on the generated binary, the following is
observed:

Disassembly of section __interrupt_vector_47:

0000ffdc <__interrupt_vector_47>:
    ffdc:       90 49 90 9e     Address 0x000000000000ffde is out of bounds.
Address 0x000000000000ffe0 is out of bounds.
mov     -1(r9), 0xffff  ; PC rel. 0xffdf
    ffe0:       aa 7f

/* snip */

00004990 <uart1_isr>:
/* snip */

for either case.

I am using gcc 5.3.0 and binutils 2.26.20160125 with no extra patches. I
have attached the linker script I am using.

Please advice if I am doing something wrong. Thank you.

Cheers,
Orlando.

Attachment: msp430f5529.ld
Description: Text document

Attachment: msp430f5529_symbols.ld
Description: Text document

Attachment: signature.asc
Description: OpenPGP digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]