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

OMF records

I am trying to import object files created by KEIL C51 compiler by my own pascal compiler. There are a lot of records not documented in the OMF51 documentation like 07, 09, 0F, 17, 19, 20, 23, 24, etc. Where can I get documentation for these records?

  • Hello Igor,

    You stated: There are a lot of records not documented in the OMF51 documentation

    Keil released part of the OMF51 Object Module Specification here:

    http://www.keil.com/download/docs/80.asp

    Ignore any record type not specified In the above link.

    Keil does have a full OMF specification, but it is only released to emulator developers. If this is for an emulator (which it sounds like its not) contact Keil support for this full specification.

    Is there a reason you need to interpret these undocumented OMF records? You should be fine with everything mentioned published specification.

  • I am already aware of this specification and records described in it are already supported. But I tried to compile one simple program with C51 and I get test.OBJ. Fine, but when I'm importing it I get the following records:

         OBJECT FILE: test.OBJ
    
            70: UNKNOWN
            02: Module Header
            0F: UNKNOWN
            19: UNKNOWN
            17: UNKNOWN
            10: Debug
            24: UNKNOWN
            23: UNKNOWN
            20: UNKNOWN
            23: UNKNOWN
            10: Debug
            10: Debug
            23: UNKNOWN
            07: UNKNOWN
            09: UNKNOWN
            10: Debug
            07: UNKNOWN
            23: UNKNOWN
            10: Debug
            10: Debug
            72: UNKNOWN
            04: Module End
    

    Most of records are undocumented. Of course, I can ignore them but where is actual data? I am missing segment definitions, external definitions, public definitions, content, fixup records, etc...

    All I am trying to do is to add support for object files created by KEIL compiler. Is there any secret in these records?

    In worst case I will be forced to do reverse engineering. This works 100% but takes time. I don't believe this is what KEIL wants.

    All I am asking is some documentation on these records - how to import them. Of course, I can also just forget about importing object files generated by KEIL tools. There are other 8051 C compilers.

  • Have you actually contacted Keil for this information?

    Remember, this forum is not the route to contact Keil!

  • Have you contacted technical support to obtain the OMF specification?

    Jon

  • Wow. Great minds type alike!

    Jon

  • All I am trying to do is to add support for object files created by KEIL compiler. Is there any secret in these records?
    any loaders I know of (can) use .hex files

    are you making an emulator?

    Erik

  • Of course, I have sent an email to KEIL (support.intl@keil.com)- no reply. I asked about the problem on the forum and was asked to explain the reason why do I need to import all the records and I have explained it in detail. Just this and nothing more.

    I am asking for help and I am explaining what I need and why. Thanks to anybody who has any solution to this problem and is willing to share the secret.

    Regards,
    igor

  • No, I am not making any emulator yet. I am writing a Pascal compiler for the 8051 family (well, it is almost done) and I'm trying to import object files created by KEIL compiler.

    I can not use HEX files since these files are absolute, i.e. there is no relocation information. They can not be used in linker.

  • Sorry, I read through the posts again, and saw that you mentioned the compiler earlier. So I guess the emulator was just a type-o.

    Yes, I think the compiler can replace the OMF. And the reference assignment is the same, so no need to change the details.