セクションをロードさせない方法

話が大げさになってきました。

このスレッドでは、「NOBITSフラグが立っているセクションを全部ゼロフィルするのは乱暴ではないか」という問いかけに対して、かなり強行に反論が出ています。自信があるのか居丈高なのかは、ちょっとわかりかねます。

  • いつもcrtが.bss(NOBITSになっている)をクリアするとは限らない。ゼロクリアする方が安全
  • この方法に依存するプログラムがあるので、現状を変えることは出来ない
  • 初期化したくないのなら、セクションヘッダではなくプログラムヘッダを使うべき

2番目の事情については、わからんでも無いです。が、どれをとっても「これが正しい方法だ」という意見ではありません。
確かにC言語の仕様書は未初期化状態の変数を0にすることを求めていますが、それはCの仕様であってELFの仕様ではありません。そうして論議されているのはBOOTELFコマンドであってBOOTCコマンドではありません。
歴史的にC言語の未初期化変数は.bssに集められていますので.bssをゼロクリアするという方針は納得できます。ただ、ELFのNOBITSは「初期値を持たない」という意味しか無く、ELFが言語に依存しないこと、また、組み込みの特性を考えるとNOBITSを全部ゼロクリアするという方策は乱暴に思えます。特に、gdbと整合が取れていないってのはどうも。
一応意見投稿してみるか。
プログラム・ヘッダについて調べているところですが…。LOADするしないの指定はできるようですが、LOADされないセグメントって、gdbデバッグできるのでしょうか。