bitwiseworks / libc

LIBC Next (kLIBC fork)
9 stars 4 forks source link

emx/io.h: Prefix nbuf, cbuf, ubuf etc. macros with underscore #107

Closed dmik closed 3 years ago

dmik commented 3 years ago

It's a terrible intervention into the user namespace for C symbols. I.e. defining a variable named nbuf is not possible because of these macros and may result in weird compile time failures like this one:

g++ -c -Zomf -march=i686 -mtune=i686 -msse2 -mstackrealign -mfpmath=sse -g -std=c++1z -fno-exceptions -Wall -Wextra -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -Werror -Wno-error=cpp -Wno-error=deprecated-declarations -Wno-error=strict-overflow -DQT_NO_IPV6 -DQT_NO_LINKED_LIST -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_INTEGER_EVENT_COORDINATES -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_QUICK_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_NO_EXCEPTIONS -DQT_GUI_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -ID:/Coding/qt5/qt5/qtdeclarative/src/quick -I. -ID:/Coding/qt5/qt5/qtdeclarative/src/quick -ID:/Coding/qt5/qt5-dev-build/qtbase/include -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQuick -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQuick/5.15.2 -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQuick/5.15.2/QtQuick -I.tracegen/debug -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtGui/5.15.2 -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtGui/5.15.2/QtGui -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQmlModels/5.15.2 -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQmlModels/5.15.2/QtQmlModels -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQml/5.15.2 -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQml/5.15.2/QtQml -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtCore/5.15.2 -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtCore/5.15.2/QtCore -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtGui -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQmlModels -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtQml -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtNetwork -ID:/Coding/qt5/qt5-dev-build/qtbase/include/QtCore -I.moc/debug -ID:/Coding/qt5/qt5/qtbase/mkspecs/os2-g++ -o .obj/debug/qsgnode.obj D:/Coding/qt5/qt5/qtdeclarative/src/quick/scenegraph/coreapi/qsgnode.cpp
In file included from C:/usr/include/InnoTekLIBC/backend.h:39,
                 from C:/usr/include/c++/9/i686-pc-os2-emx/bits/gthr-default.h:51,
                 from C:/usr/include/c++/9/i686-pc-os2-emx/bits/gthr.h:148,
                 from C:/usr/include/c++/9/ext/atomicity.h:35,
                 from C:/usr/include/c++/9/bits/basic_string.h:39,
                 from C:/usr/include/c++/9/string:55,
                 from C:/usr/include/c++/9/stdexcept:39,
                 from C:/usr/include/c++/9/array:39,
                 from C:/usr/include/c++/9/tuple:39,
                 from C:/usr/include/c++/9/functional:54,
                 from C:/usr/include/c++/9/pstl/glue_algorithm_defs.h:13,
                 from C:/usr/include/c++/9/algorithm:71,
                 from D:/Coding/qt5/qt5/qtbase/src/corelib/global/qglobal.h:142,
                 from D:/Coding/qt5/qt5-dev-build/qtbase/include/QtCore/qglobal.h:1,
                 from D:/Coding/qt5/qt5/qtdeclarative/src/qml/qtqmlglobal.h:47,
                 from D:/Coding/qt5/qt5-dev-build/qtbase/include/QtQml/qtqmlglobal.h:1,
                 from D:/Coding/qt5/qt5/qtdeclarative/src/quick/qtquickglobal.h:43,
                 from D:/Coding/qt5/qt5-dev-build/qtbase/include/QtQuick/qtquickglobal.h:1,
                 from D:/Coding/qt5/qt5/qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterial.h:43,
                 from D:/Coding/qt5/qt5/qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp:40:
D:/Coding/qt5/qt5/qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp: In member function 'void QSGMaterialRhiShaderPrivate::prepare(QShader::Variant)':
D:/Coding/qt5/qt5/qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp:162:53: error: expected ')' before '->' token
  162 |             const QShaderDescription::UniformBlock &ubuf(ubufs[i]);
      |                                                     ^~~~
D:/Coding/qt5/qt5/qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp:162:53: error: expected ')' before '->' token
D:/Coding/qt5/qt5/qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterialrhishader.cpp:163:38: error: 'ubuf' was not declared in this scope
  163 |             if (ubufBinding == -1 && ubuf.binding >= 0) {
      |                                      ^~~~

Discovered while in https://github.com/bitwiseworks/qt5-os2/issues/16.

dmik commented 3 years ago

I have it fixed for quite a while now and see no regressions. Will commit.

dmik commented 3 years ago

Reopening this as forgot to commit relevant source changes (LIBC uses these macros itself). Thanks to @SilvanScherrer for finding that out. Will double check.