Skip to main content
Explorer
July 19, 2020
Question

const array is overflowing .text segment when there is plenty of room

  • July 19, 2020
  • 4 replies
  • 895 views

I am using a stm8s103f which has 8K flash. My project compiles fine using the cosmic compiler. I get a map that looks like this .

start 00008080 end 00008080 length 0 segment .const
start 000080a1 end 00008924 length 2179 segment .text
start 00004000 end 00004000 length 0 segment .eeprom
start 00000000 end 00000019 length 25 segment .bsct, initialized
start 00008088 end 000080a1 length 25 segment .bsct, from
start 00000019 end 000000b9 length 160 segment .ubsct
start 000000b9 end 000000b9 length 0 segment .bit
start 000000b9 end 000000b9 length 0 segment .share
start 00000100 end 00000100 length 0 segment .data
start 00000100 end 00000100 length 0 segment .bss
start 00000000 end 0000074e length 1870 segment .info.
start 00000000 end 00001a11 length 6673 segment .debug
start 00008000 end 00008080 length 128 segment .const
start 00008080 end 00008088 length 8 segment .init

When I try to add a large constant array with

const u16 tempTable[867] = {
<snip>
}

I get the build error "segment .text size overflow (14)".

What am I doing wrong? 2179 plus 2*867 is less than 8K.

    This topic has been closed for replies.

    4 replies

    Visitor II
    July 19, 2020

    check the map file when linker fail, reduce the table by binary search to find out the limit, check the linker parameter file in case the memory range is wrong. also check thatthere is no float ansi lib plugged in and bloating the flash for example.

    Graduate II
    July 19, 2020

    const isnt definition for placement of data, but protected against write. Some compilers place it to data area.

    Graduate II
    July 19, 2020

    static const

    mchahnAuthor
    Explorer
    July 19, 2020

    > check the linker parameter file 

    Thks. Which file/location is that? I'll look for it.

    > Some compilers place it to data area

    The error specifically says it is .text that is overflowing. That is the 8K code segment, right?

    > static const

    I just tried that and it didn't help.