This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

locating arbitrary segments

I have a program which compiles into N segments, where N >= 2. I need to locate all segments starting at a specific address. I know the names of the first two segments, but I don't know the names (or types) of the remaining N-2 segments (these can be arbitrarily changed without my knowing). I'm trying to compose a BL51 command line to handle all cases. Using wildcards such as ?C?* works as long as there is at least one segment that matches the wildcard. Otherwise, the linker gives:

ERROR L131: No MATCHING SEGMENT FOR WILDCARD SEGMENT NAME

Is there any general way to get around this? I'm using BL51 V4.02.

Thanks,
Slarti

  • I need to locate all segments starting at a specific address...

    If these are CODE segments and you really need to locate ALL of them starting at a particular address, why not just use the CODE linker directive to specify where CODE memory starts. For example:

    BL51 {files} CODE(0x2000)
    

    Then, all relocatable code segments will be stored starting at address 2000h.

    Jon

  • The problem was that I needed to locate two specific segments before all the others. The solution appears to be:

    CODE(0x4005, ?PR?FOO(0x4005), ?PR?BAR)

    It wasn't clear from the A51 manual if this was possible, but the linker seems to do the right thing. Am I correct in thinking that this will place FOO at 0x4005, followed immediately by BAR, followed immediately by all the other segments in the program?

    Thanks,
    Slarti

  • Am I correct in thinking that this will place FOO at 0x4005, followed immediately by BAR, followed immediately by all the other segments in the program?

    Yep - That'll do it.

    Jon