Re: arm-none-eabi-objdump: Reading section .bss failed because: memory exhausted

Arjan van Vught <[email protected]> Tue, 7 Apr 2020 18:06:51 +0200
Newsgroups gmane.comp.gnu.utils
Message-ID <[email protected]>

> Op 7 apr. 2020, om 02:41 heeft Bob Proulx <[email protected]> het =
volgende geschreven:
>=20
> This mailing list has very little activity.  I don't know and would
> normally comment but I hate to see people post questions and then not
> get any response at all.  Therefore I will comment here in the hope
> that I might be able to get you to a better place to ask your =
question.
Hi Bob, thank you working on this issue with me. Much appreciated.

>=20
> Arjan van Vught wrote:
>> What does the error mean? Is it just that the .list file is not
>> generated completely?  This error got introduced when upgrading from
>> version 7 to 9.
>=20
> Upgrading what from version 7 to what version 9?  What is being
> upgraded?
With the brew cask upgrade the GNU tools got updated from 7 to 9 ->
arm-none-eabi-objdump --version
GNU objdump (GNU Tools for Arm Embedded Processors 9-2019-q4-major) =
2.33.1.20191025
>=20
>> arm-none-eabi-objdump -D lib_h3/libh3.a  | arm-none-eabi-c++filt > =
lib_h3/lib.list
>> arm-none-eabi-objdump: error: lib_h3/libh3.a(h3_codec.o)(.bss) =
section size (0x800c bytes) is larger than file size (0xde8 bytes)
>=20
> The BSS section is normally used to store static data.  In a C program
> if one is defining a variable with initialized data then this will go
> into the BSS section.
>=20
>  int iii =3D 42;
>=20
> It makes no sense if the BSS segment is larger than the file size.  It
> makes me thing there is a data corruption problem.  Or perhaps the
> file system is full and part of the file could not be written.  Or
> potentially other problem of which this is only a down stream cascade
> failure with a different root cause.

arjanvanvught@MacBook-Air lib-h3 % arm-none-eabi-objdump -D =
lib_h3/libh3.a  | arm-none-eabi-c++filt > lib_h3/lib.list
arm-none-eabi-objdump: error: lib_h3/libh3.a(h3_codec.o)(.bss) section =
size (0x800c bytes) is larger than file size (0xde8 bytes)
arm-none-eabi-objdump: Reading section .bss failed because: memory =
exhausted
arm-none-eabi-objdump: error: lib_h3/libh3.a(udp.o)(.bss) section size =
(0x19934 bytes) is larger than file size (0xcfc bytes)
arm-none-eabi-objdump: Reading section .bss failed because: memory =
exhausted

arjanvanvught@MacBook-Air lib-h3 % echo $?                               =
                                           =20
0

arjanvanvught@MacBook-Air lib-h3 % ls -al build_h3/src/h3_codec.o        =
                                           =20
-rwx------  1 arjanvanvught  staff  3560  7 apr 17:50 =
build_h3/src/h3_codec.o

The file size of the object file is 3560 bytes which is the (0xde8 =
bytes) as mentioned in the error. Why would there be an error or even =
better; why would there be any relationship between the allocated bytes =
in .bss and the object file size?=20

objdump is just displaying information from object files. This looks to =
me as an internal error for objdump.

The objdump exit code is 0. Therefore the command is completing =
correctly.=20

>=20
> Reference:
>=20
>  https://en.wikipedia.org/wiki/.bss
>=20
>> arm-none-eabi-objdump: Reading section .bss failed because: memory =
exhausted
>=20
> Memory exhausted indicates that the program tried to allocate memory
> or tried to fork and whichever action it was failed due to being out
> of virtual memory.
>=20
> I would look to see if the storage filled up.  I would look to see if
> whatever you are doing ran out of memory.
>=20
> Since this is ARM I assume some type of NAND flash file system.  In
> which case I would look for a failure of the storage such as due to
> worn out storage cells.  If it is an SD card I would try reading from
> every byte and verifying that the storage device is working okay.  I
> have had SD cards using NAND storage and other similar devices fail
> creating file corruption.
The cross-compilation is running on MacOS with 8GB RAM. It would be =
surprising to me when objdump, working with a relative small archive =
file, is running out memory.
It seems to be that there is somehow a bug introduced within objdump.

Would it be good to open a bug report with objdump?=20

Thanks, Arjan

>=20
> Bob