#2212 Linker doesn'tcare about architecture

closed-fixed
Maarten Brock
None
STM8
5
2013-12-16
2013-09-05
No

I accidentially forgot to specify -mstm8 when calling sdcc *.rel. So sdcc linked my .rel files, which were compiled for stm8 with the standard libary for mcs51-small without complaining. I would have at least expected a warning here.

Philipp

Discussion

  • David Cary
    David Cary
    2013-09-06

    Is there anything in the compiled-but-not-yet-linked file format that could give the linker a clue as to what chip it was compiled for?

     
  • Maarten Brock
    Maarten Brock
    2013-12-16

    • status: open --> closed-fixed
    • assigned_to: Maarten Brock
    • Category: sdld --> STM8
     
  • Maarten Brock
    Maarten Brock
    2013-12-16

    Yes, there is. All sdasxxx using targets are supposed to place a .optsdcc line in the generated assembler. It should contain the -m<target> option. This line is turned into an O line in the .rel file and checked by the linker when present. All objects must use the exact same O line. But if it is absent anything goes.

    As it turns out the glue() function in SDCCglue.c checks for mcs51_like, TARGET_Z80_LIKE and TARGET_HC08_LIKE and places the line. But STM08 is none of the above and thus no line is generated. I have inverted the logic and exclude the line for PICxx only.

    Fixed in SDCC 3.3.2 #8904.