Pull to refresh
7
Karma
0
Rating
Алексей @boov

User

  • Followers
  • Following 1

LibreOffice: страшный сон бухгалтера

Пользуясь случаем, хочу спросить у разработчиков анализатора. Почему в последней сборке PVS под Linux пропали исходники к plog-converter из архива *.tgz?

Amazon сдался и повысил зарплаты сотрудникам

Эта надпись использовалась немцами времён второй мировой войны на входе в концлагерях.

Приведение типов. Наглядное отличие static_cast от dynamic_cast

Читайте внимательнее.
"Для того, чтобы такая проверка была возможна, следует добавить к классам виртуальность (dynamic_cast использует таблицы виртуальных функций, чтобы делать проверку)."

Position-independent code (PIC) в разделяемых библиотеках

Отвечу сам же. Инструкция call использует относительный адрес, а не абсолютный, как я считал выше. В случае вызова static функции линкеру нет смысла делать релокацию, т.к. функция внутренняя и ее расположение известно по смещению. Если же функция не static, то линкер создаст для нее релокацию, причины лежат в LD_PRELOAD и в глобальном переопределении внешних символов динамическим линкером.

Position-independent code (PIC) в разделяемых библиотеках

Не могли бы подробнее пояснить, почему в таком случае не требуется got и plt. Я не вижу разницы между static и рассмотренной в статье функцией. Для call ведь по-прежнему требуется абсолютный адрес, а его без got в случае pic не получить.

Пишем для UEFI BIOS в Visual Studio. Часть 2 – создаем свой первый драйвер и ускоряем отладку

Имелось в виду, где происходит монтирование файловой системы виртуалки для загрузки собранного драйвера, какие средства под Windows для этого используются, как собственно запускается образ ВМ (qemu?) Возможно ли это использовать в отрыве от edk2.

Пишем для UEFI BIOS в Visual Studio. Часть 2 – создаем свой первый драйвер и ускоряем отладку

Спасибо, все очень доступно! Планируете описать процесс деплоя драйвера в виртуалку более подробно? Интересуюсь с целью встраивания данного подхода в CI.

Полиморфизм и указатели на функции

К слову это не пузырек, а сортировка выбором.

gdb-дуэль — списки, деревья и хэш таблицы против командной строки

Да, find'ом пробовал, но он спотыкается на первом же inaccessible адресе. Думал, есть какое-то средство из коробки для такого действия. На данный момент я вижу только такой способ: получать список замапленных регионов и искать find'ом в каждом из них.

gdb-дуэль — списки, деревья и хэш таблицы против командной строки

Подскажите касательно gdb. Как с помощью него можно найти все адреса, содержащие некоторый magic. Удобно для поиска тэгированных объектов в дампах. В windbg это делается, например, так "s -d 0 L?-1 0xdeadbeef".

История одного бага: выравнивание данных на x86

for (size_t i = 5; i < size / 4; i++) {
        sum += q[i];


Предполагается, что размер заголовка всегда кратен 4?

А по поводу использования инструкций sse.
Недавно у себя при сборке проекта clang'ом 3.8 под x86 также на это наступили.
clang в случае зануления через memset активно использует sse.
Временно решили проблему, используя опцию -mstackrealign

Скриншотим игры — the hard way

На вскидку, преимущество только в использовании стандартного документированного API для инжекта вместо закладки на то, что адрес kernel32.dll будет тот же самый.

Простая в использовании обертка над LoadLibrary() и GetProcAddress()

К сожалению не так удобно.
Фактически в данном режиме в месте вызова импортируемой функции будет вызываться хелпер-функция __delayLoadHelper или __delayLoadHelper2 (зависит от версии ms studio). Их реализация содержится в библиотеке delayimp.lib (потребуется с ней слинковаться), ее код лежит здесь — vc/include/delayhlp.cpp.
По нему видно, что данный хелпер осуществляет вызов LoadLibrary/GetProcAddress (это делается только один раз).
В случае неудачи — не найден модуль или не найдена фунция — будет брошено исключение посредством RaiseException.
Соответственно его можно перехватить и определить причину ошибки.

Простая в использовании обертка над LoadLibrary() и GetProcAddress()

Справедливости ради, стоит отметить, что кроме двух упомянутых в статье способов работы с dll, есть еще один, так называемый delay load режим. По сути это нечто среднее между load-time и run-time режимами.

Ограничение памяти, доступной программе

Отдельная куча в win подразумевает протаскивания своего аллокатора на ее базе по всей программе. Задумка автора была как раз ограничить память без модификации исходного кода. В win я бы посмотрел для этого в сторону объекта job.

Как могла бы выглядеть поддержка JSON в современном С++

> Для линейно-упорядоченных контейнеров порядок элементов будет сохранён, для ассоциативных, понятное дело — нет.

Поправьте меня, если не так. Но для ассоциативных контейнеров set и map порядок следования элементов все же детерминирован и определяется согласно используемому отношению эквивалентности.

Hotpatch. Патчим память ядра Windows

Скажите, а за счет чего достигается потокобезопасность при переписывании mod edi, edi на короткий джамп?

Реализация словаря в Python 2.7

Огромное спасибо за детальное разъяснение!
В принципе вы все это описали в самой статье, но я при первом прочтении упустил ряд деталей, а дьявол кроется в мелочах :)
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity