Read-only data within writable segment

In the executable (x86) that I’m working on, the the data segment contains constant data mixed with modifiable data. This includes constant strings used all over the application. As a result, I have to set them to const to display them in pseudocode instead of their automatically-generated address names. This is quite cumbersome, especially over thousands of functions.

I’ve noticed that the first 0x3F000-sized block of the overall 0xE3000-sized segment is constant data exclusively. Given that it’s neatly-organized, is there some way I can split the segments to create a read-only one in the first 0x3F000 without breaking references?

You could set Print only constant string literals to False in decompiler settings. You wouldn’t have to mark anything const.

Wow. I forgot this exists, but it does actually have a negative effect in some cases where you want to see a variable representing a constant. Does anyone know of a way to have both? It’s basically the exact opposite scenario of using const, but in much fewer circumstances.

You can mark it as volatile. See Tips and tricks | Hex-Rays Docs

Thanks. I actually did this before my last post, but I think there were other factors at play that I didn’t consider. It does appear to work when I try it in a simpler scenario.