You will be able to read an object file in c, that is, a file.o

if you have a .o example software.o

c object file.

Maybe when you read it you will see strange symbols.

You can read it with objdump or readelf

examples of how to use them:

objdump -d software.o

axeldamian@axxelin:~/examples$ objdump -d software.o

software.o:     file format elf64-x86-64

Disassembly of section .text:

0000000000000000 <main>:

   0: f3 0f 1e fa          endbr64

   4: 55                   push   %rbp

   5: 48 89 e5             mov    %rsp,%rbp

   8: 48 8d 05 00 00 00 00 lea    0x0(%rip),%rax        # f <main+0xf>

   f: 48 89 c7             mov    %rax,%rdi

  12: e8 00 00 00 00       call   17 <main+0x17>

  17: b8 00 00 00 00       mov    $0x0,%eax

  1c: 5d                   pop    %rbp

  1d: c3                   ret

also:

readelf -a software.o

axeldamian@axxelin:~/examples$ readelf -a software.o

ELF Header:

  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00

  Class:                             ELF64

  Data:                              2’s complement, little endian

  Version:                           1 (current)

  OS/ABI:                            UNIX – System V

  ABI Version:                       0

  Type:                              REL (Relocatable file)

  Machine:                           Advanced Micro Devices X86-64

  Version:                           0x1

  Entry point address:               0x0

  Start of program headers:          0 (bytes into file)

  Start of section headers:          600 (bytes into file)

  Flags:                             0x0

  Size of this header:               64 (bytes)

  Size of program headers:           0 (bytes)

  Number of program headers:         0

  Size of section headers:           64 (bytes)

  Number of section headers:         14

  Section header string table index: 13

Section Headers:

  [Nr] Name              Type             Address           Offset

       Size              EntSize          Flags  Link  Info  Align

  [ 0]                   NULL             0000000000000000  00000000

       0000000000000000  0000000000000000           0     0     0

  [ 1] .text             PROGBITS         0000000000000000  00000040

You can also create a .s and read it.

gcc -S software.c

that command will generate a .s that you can read.

cat software.s