This is the mail archive of the binutils@sources.redhat.com 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]

h8300-elf test case


Test code for h8300-elf relax file r.c

extern unsigned char eightbitaddressable;    // in range 0xFFFF00 - 0xFFFFFF
extern  unsigned char sixteenbitaddressable; // in range 0x0 - 0x7FFF
                                            // or 0xFF8000 - 0xFFFFFF
extern  unsigned char maxbitaddressable;     //  in range 0x8000 - 0xFF7FFF

// test the relaxing at line ?? of elf32-h8300,c

void line934 (void)
{
   asm volatile (" beq _skip10");
   asm volatile (" jmp @_line934\n_skip10:");
}

void line956 (void)
{
   asm volatile (" beq _skip21");
   asm volatile (" jsr @_line956\n_skip21:");
}

void line1021 (void)
{
   asm volatile (" beq _skip31:16");
   asm volatile (" jsr @_line1021\n_skip31:");
}

int line1084 (void)
{
char x;
int y;
asm volatile (" mov.b %1:16,%0l":"=g"(x) : "m" (eightbitaddressable) ); asm volatile (" mov.b r0l,%0:16": "=m" (eightbitaddressable) );
asm volatile (" mov.b %1:16,%0l":"=g"(x) : "m" (sixteenbitaddressable) ); asm volatile (" mov.b r0l,%0:16": "=m" (sixteenbitaddressable) );
asm volatile (" mov.b %1:16,%0l":"=g"(x) : "m" (maxbitaddressable) ); asm volatile (" mov.b r0l,%0:16": "=m" (maxbitaddressable) );
// word access
asm volatile (" mov.w %1:24,%0":"=g"(y) : "m" (eightbitaddressable) ); asm volatile (" mov.w r0,%0:24": "=m" (eightbitaddressable):"r" (y) );
asm volatile (" mov.w %1:24,%0":"=g"(y) : "m" (sixteenbitaddressable) ); asm volatile (" mov.w r0,%0:24": "=m" (sixteenbitaddressable):"r" (y) );
asm volatile (" mov.w %1:24,%0":"=g"(y) : "m" (maxbitaddressable) ); asm volatile (" mov.w r0,%0:24": "=m" (maxbitaddressable):"r" (y) );
return (int) x;
}


int line1161 (void)
{
char x;
asm volatile ("mov.b %1:24,%0l":"=g"(x):"m"(eightbitaddressable) ); // 68 28
asm volatile ("mov.b r0l,%0:24": "=m" (eightbitaddressable) ); // 68 a8 ...
asm volatile ("mov.b %1:24,%0l":"=g"(x):"m"(sixteenbitaddressable)); // 68 28
asm volatile ("mov.b r0l,%0:24": "=m" (sixteenbitaddressable) ); // 68 a8 ...
asm volatile ("mov.b %1:24,%0l":"=g"(x):"m"(maxbitaddressable) ); // 68 28
asm volatile ("mov.b r0l,%0:24": "=m" (maxbitaddressable) ); // 68 a8 ...
return (int) x;
}


int line1202 (void)
{
int x;
asm volatile ("mov.w %1:32,%0":"=r"(x):"m"(sixteenbitaddressable)); // 68 28
asm volatile ("mov.w r0,%0:32": "=m" (sixteenbitaddressable) ); // 68 a8 ...
return (int) x;
}


int main (void)
{
(void) line934();
(void) line956();
(void) line1021(); (void) line1084();
(void) line1161(); (void) line1202();
return 1;
}
void start (void)
{
main();
}


create a linker file called rom.lnk with the following added

SECTIONS
{
_eightbitaddressable = 0xFFFF00;
_sixteenbitaddressable = 0x007FFF;
_maxbitaddressable = 0x008000;


Without patch

h8300-elf-gcc -Wall -nostartfiles -O3 -fno-inline -ms -fomit-frame-pointer -c -o r.o r.c
h8300-elf-gcc -Wall -nostartfiles -O3 -fno-inline -ms -fomit-frame-pointer -g -ms -Wl,--relax -Trom.lnk -Xlinker -Map -Xlinker rom.map -o relax.out r.o -lm
/usr/local/lib/gcc-lib/h8300-elf/3.3/../../../../h8300-elf/bin/ld: BFD 2.14.90 20030702 internal error, aborting at ../../binutils-latest/bfd/elf32-h8300.c line 1060 in elf32_h8_relax_section


/usr/local/lib/gcc-lib/h8300-elf/3.3/../../../../h8300-elf/bin/ld: Please report this bug.

collect2: ld returned 1 exit status



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