← All posts tagged Windows

Macil
Windows GCC Haskell C binutils *пиздец Натолкнулся на доставляющую фичу бинутилза под PE/COFF. Что GCC, что GHC вставляют что-то типа .ident "Compiler Version" в генерируемые ассемблерные файлы. Для GCC это отключается по -fno-ident, для GHC — хрен знает.
Под ELF никаких проблем: создаётся секция .comment в объектнике, которая: а) не гузится в память; б) с флагом MERGE (дубли схлопываются при линковке). Т.е. в результате в исходном бинарнике получается секция с «подписями» всех компиляторов, когда-либо участвовавших в его создании. Удобно.
Для PE/COFF... Ну, вы поняли... В объектнике создаётся секция .rdata$zzz, которая мало того с флагами ALLOC и LOAD, так ещё дефолтный линк-скрипт аппендит её к .rdata бинарника. В результате, мусор в конце секции .rdata.
И если в 7.10.2 он занимал небольшое количество относительно размера бинарника, то в 7.10.3 со сменой тулчейна ситуация значительно ухудшилась.
Решение:
1. Подвергнуть живительному экстерминатусу секцию .rdata$zzz во всех объекниках и статических библиотеках strip --strip-unneeded --keep-file-symbols -R .rdata$zzz сделает своё дело. Увы, strip обламывается на HsBase из-за громадного размера, поэтому придётся вручную упаковывать/распаковывать.
2. Добавить строчку в линк-скрипт (перед .rdata) DISCARD : {*(rdata$zzz)}
Увы, хрен его знает как это сделать в GHC.
Гугл молчит, так что прошу распространить.
А вообще, эта «фича», мне кажется, может смело номинироваться на премию «Просос года». Даже боязно смотреть как обстоят дела с «официальными» сборками опенсорса под венду.
Macil
Windows ненависть mustdie Блять, всего три "семерки", а одна уже не загружается: наглухо виснет после ввода пароля. Очевидно, пала в неравной битве с нашим отечественным "Консультантом". В сейфмоде такая же хуйня. ИЧСХ, эта недосистема исправно зажигает Num Lock, при нажатии на клавишу. Но отказывается реагировать хоть на что-нибудь: Ctrl+Alt+Del или Ctrl+Shift+Esc. Какой нахуй прогресс? Что эти бля, уроды за 7 лет сделали, кроме рвотного интерфейса, который тут же сбрасывается в "классику", иначе просто невозможно? Ладно, до 2000-01-го года можно было еще как-то оправдаться, мол 98-я винда, сцуко, химера. Тяжелое наследие блядского прошлого. Но 10 лет прошло, и не изменилось не просто нихуя, а абсолютно нихуя. Даже возрасла импотенция системы в корпоративной среде.
За 10 лет дистрибутивы GNU/Linux et al прошли ГРОМАДНЫЙ путь. Винда же топчется на месте: та же философия, тот же подход к пользователям и тот же алгоритм решения проблем. Который, блядь, я завтра к этой винде применю.