Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 65457
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T18:56:58+00:00 2026-05-10T18:56:58+00:00

I’m producing a hex file to run on an ARM processor which I want

  • 0

I’m producing a hex file to run on an ARM processor which I want to keep below 32K. It’s currently a lot larger than that and I wondered if someone might have some advice on what’s the best approach to slim it down?

Here’s what I’ve done so far

  1. So I’ve run ‘size’ on it to determine how big the hex file is.
  2. Then ‘size’ again to see how big each of the object files are that link to create the hex files. It seems the majority of the size comes from external libraries.
  3. Then I used ‘readelf’ to see which functions take up the most memory.
  4. I searched through the code to see if I could eliminate calls to those functions.

Here’s where I get stuck, there’s some functions which I don’t call directly (e.g. _vfprintf) and I can’t find what calls it so I can remove the call (as I think I don’t need it).

So what are the next steps?

Response to answers:

  • As I can see there are functions being called which take up a lot of memory. I cannot however find what is calling it.
  • I want to omit those functions (if possible) but I can’t find what’s calling them! Could be called from any number of library functions I guess.
  • The linker is working as desired, I think, it only includes the relevant library files. How do you know if only the relevant functions are being included? Can you set a flag or something for that?
  • I’m using GCC
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T18:56:59+00:00Added an answer on May 10, 2026 at 6:56 pm

    General list:

    • Make sure that you have the compiler and linker debug options disabled
    • Compile and link with all size options turned on (-Os in gcc)
    • Run strip on the executable
    • Generate a map file and check your function sizes. You can either get your linker to generate your map file (-M when using ld), or you can use objdump on the final executable (note that this will only work on an unstripped executable!) This won’t actually fix the problem, but it will let you know of the worst offenders.
    • Use nm to investigate the symbols that are called from each of your object files. This should help in finding who’s calling functions that you don’t want called.

    In the original question was a sub-question about including only relevant functions. gcc will include all functions within every object file that is used. To put that another way, if you have an object file that contains 10 functions, all 10 functions are included in your executable even if one 1 is actually called.

    The standard libraries (eg. libc) will split functions into many separate object files, which are then archived. The executable is then linked against the archive. By splitting into many object files the linker is able to include only the functions that are actually called. (this assumes that you’re statically linking)

    There is no reason why you can’t do the same trick. Of course, you could argue that if the functions aren’t called the you can probably remove them yourself.

    If you’re statically linking against other libraries you can run the tools listed above over them too to make sure that they’re following similar rules.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 86k
  • Answers 86k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Edit: Hash versus Array As cincodenada correctly pointed out in… May 11, 2026 at 5:19 pm
  • Editorial Team
    Editorial Team added an answer In short no. I would suggest using server side time,… May 11, 2026 at 5:19 pm
  • Editorial Team
    Editorial Team added an answer Found one solution here: https://timvw.be/2007/01/08/generating-utf-8-with-systemxmlxmlwriter/ I was missing this at… May 11, 2026 at 5:19 pm

Related Questions

I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I am currently running into a problem where an element is coming back from
Seemingly simple, but I cannot find anything relevant on the web. What is the
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is
Is it possible to replace javascript w/ HTML if JavaScript is not enabled on

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.