LINUX.ORG.RU

Избранные сообщения joy4eg

неверный src ip в исходящих пакетах при rule based routing

Форум — Admin

Приветствую.

Пытаюсь сделать правильно роутинг некоторых маршрутов через vpn, используя железяку на openwrt (ядро 3.18.20). И столкнулся с проблемой, информации по которой не могу найти буквально нигде. Сырцы ядра еще не курил, но близок к тому.

Проблема. Есть стандартный набор правил для rule based routing:

ip rule add priority 103 fwmark 0x10/0x10 lookup vpn
ipset create vpn hash:net
ipset add vpn 8.8.8.8
iptables -t mangle -A OUTPUT -m set --match-set vpn dst -j MARK --set-mark 0x10
iptables -t mangle -A PREROUTING -i br-lan -m set --match-set vpn dst -j MARK --set-mark 0x10
ip route add default via 10.9.0.1 dev tun1 src 10.9.0.2 table vpn

Это — работает. То есть, компы за железякой благополучно ходят через tun1 для некоторых адресов и горя не знают.

Но! Локально сгенерированные пакеты ходить не хотят. Ни icmp, ни udp, ни tcp, ничего.

Смотрю tcpdump -i tun1, пускаю ping 8.8.8.8 и вижу радость:

# tcpdump -i tun1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun1, link-type RAW (Raw IP), capture size 65535 bytes
02:26:25.653753 IP 100.100.100.100 > 8.8.8.8: ICMP echo request, id 4230, seq 0, length 64
02:26:26.655484 IP 100.100.100.100 > 8.8.8.8: ICMP echo request, id 4230, seq 1, length 64
02:26:27.655723 IP 100.100.100.100 > 8.8.8.8: ICMP echo request, id 4230, seq 2, length 64
02:26:28.655963 IP 100.100.100.100 > 8.8.8.8: ICMP echo request, id 4230, seq 3, length 64
02:26:29.656196 IP 100.100.100.100 > 8.8.8.8: ICMP echo request, id 4230, seq 4, length 64

Где 100.100.100.100 — ip, выданный провайдером, висящий на локальном интерфейсе, отмеченном как default в таблице main.

При этом:

# ip route get 8.8.8.8 mark 0x10
8.8.8.8 via 10.9.0.1 dev tun1  src 10.9.0.2  mark 0x10
    cache

Позвольте, но зачем тогда поле src в таблице роутинга? При этом, ping -I tun1 8.8.8.8 работает как надо, но объяснить dnsmasq что надо сокет открывать на конкретном интерфейсе, вроде бы, нельзя.

И вот дальше я пока не могу продвинуться. Пакеты с левым src ip даже не долетают до другого конца openvpn-туннеля, тоже не могу понять почему.

На другой железяке, x86, с 3.2.0-105-generic-pae такой проблемы, вроде бы, не наблюдается. Может быть, это известная бага ядра 3.18.20? Или, что скорее, я чего-то не понимаю?

 ,

dmiceman
()

PCIe Bus Error

Форум — Linux-hardware

Добрый день.

Поставил на ноут ArchLinux.

При включении wifi в лог сыпет сообщения в огромном количестве

Ошибка

pcieport 0000:00:1c.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e0(Receiver ID) device [8086:9d14] error status/mask=00000001/00002000
pcieport 0000:00:1c.0: [ 0] Receiver Error (First)

lspci

00:1c.0: PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)

как это исправить? Wifi лагает просто безбожно. Спасибо.

 , , ,

qshiroe
()

Подготовка к интервью на sre

Форум — Talks

ЛОР, буквально через три недели еду на онсайт интервью на sre. Как можно подготовиться? Что почитать?

Уже читаю SRE book, linux kernel development и cracking the coding interview.

Перемещено leave из development

 , ,

redvicka
()

skypeforlinux beta 5.1.0.1 жрет CPU, откатываемся обратно на 4.3?

Форум — Desktop

Вот эта запускалка похоже только 4.3 усмиряет, но там и так не сильно много кушал он. https://habrahabr.ru/post/242043/

Последний скайпфорлинукс_бета_5.1.0.1 - это просто пипец. Если свернуть его, то норм, почти не ест, а вот развернутый уже под 20%, если переходить по чатам, то уже под 50-60% скачет.

В community.skype.com одни жалобы, никаких решений и прогнозов что исправят не нашел.

Есть предложения кроме как «ненужен» и откатиться на 4.3?

 

frymock
()

Go: особенности работы рантайма во время вызова дорогих syscall

Форум — Development

Всем привет. Буду благодарен, если кто-то сможет прояснить, как именно ведёт себя рантайм Go при выполнении медленных сисколлов. Представим, что есть приложение, которое выполняет интенсивную работу с ФС (создаёт, пишет, синкает файлы). По очевидным причинам вызов syscall.Fsync достаточно дорогой: на какое-то время вызывающая горутина будет заблокирована. Вопрос в том, продолжат ли остальные горутины работать? Или любое переключение в контекст ядра останавливает весь рантайм?

Иными словами, имеет ли смысл применять многопоточность для ввода на диск? Пример:

package main

import (
	"log"
	"os"
	"sync"
)

var data = []byte("Some big data")

func worker(filenameChan chan string, wg *sync.WaitGroup) {
	defer wg.Done()
	for {
		filename, ok := <-filenameChan
		if !ok {
			return
		}

		f, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY, os.FileMode(0644))
		if err != nil {
			log.Fatal(err)
			continue
		}

		if _, err := f.Write(data); err != nil {
			log.Fatal(err)
			continue
		}

		if err := f.Sync(); err != nil {
			log.Fatal(err)
			continue
		}

		if err := f.Close(); err != nil {
			log.Fatal(err)
		}
	}
}

func main() {

	// Launch workers
	filenameChan := make(chan string)
	wg := &sync.WaitGroup{}
	for i := 0; i < 2; i++ {
		wg.Add(1)
		go worker(filenameChan, wg)
	}

	// Send tasks to workers
	filenames := []string{
		"1.txt",
		"2.txt",
		"3.txt",
		"4.txt",
		"5.txt",
	}
	for i := range filenames {
		filenameChan <- filenames[i]
	}
	close(filenameChan)

	wg.Wait()
}

Спасибо всем за помощь.

 ,

vitalyisaev2
()

«Ни сы» по английски

Форум — Talks

День добрый. Порой на вопросы заказчика хочется ответить японской поговоркой «ни сы», но не знаю как это точно передать на английском.

Кто подскажет?

 ,

Pavval
()

10 причин почему программист на С++ может выбить много денег

Форум — Development

Список в конце поста написан Лавсаном 2 года назад. (2011-03-23 19:56:00) (источник)
Надеюсь, автор не подаст жалобу в Роспатент за перепечатку :-)
Кстати, sudo cast lovesan.

Чтобы проверить актуальность вопроса, всю последнюю неделю я долго и нудно использовал этот список в дискуссиях. Чтобы разобрать отдельные пункты отдельно.

Временное резюме: С++ всё еще актуален по историческим причинам. Еще есть мобилки (sudo cast mono), гиперкластеры для шиндовс 3.11 (sudo cast vromanov) и базы данных. Т.к. он актуален, но не предназначен ни для чего (см. выводы в конце списка) новых специалистов по нему должно быть мало. Маленькая конкуренция на огромной области применения — огромное лавэ $$$. Вот это и есть истинная причина использовать кресты — возможность срубить €€€.

Честно говоря, «хитрый план» мне уже очень надоел, поэтому пора открыть карты.

Заодним, крестопоклонники смогут выйти на последний и решительный бой, т.к. сегодня пятница и вечером будет время пообщаться. Поклонникам мамкиного борща тоже наверняка есть что добавить, конструктивно и аргументированно.

Вот этот список:

  1. Вырвиглазный синтаксис и контекстно-зависимая грамматика
    • медленная компиляция
    • частые «internal error» в компиляторах
    • код плохо читается и его сложно поддерживать
    • разбор кода различными инструментами, вроде IDE, и его генерация - сильно затруднены
  2. ручное управление памятью
    • неудобства при работе с динамической памятью
    • утечки памяти
    • висячие ссылки
    • сегфолты
    • стандартные средства, как то malloc/new, работают медленно
    • фрагментация кучи
    • велосипедные аллокаторы на каждом шагу
      • которые далеко не факт что эффективнее malloc/new

    • велосипедные счетчики ссылок на каждом шагу, опять же
      • медленная работа
      • перерасход по памяти

    • отладка затруднена
    • написание GC, по факту, невозможно, отчасти из-за (5), (7) и (8)
  3. Никакого ABI
  4. Нестандартизированный и непредсказумый name mangling
  5. Дублирование функционала Си
    • сами фичи из Си никуда не деваются при этом
      • отчасти из-за того, что по функционалу превосходят аналоги из C++

    • запутывает новичков
    • malloc - new/new[], free - delete/delete[]
    • препроцессор - шаблоны
    • указатели - ссылки
      • ссылка не может быть NULL, что способствует появлению висячих ссылок и сегфолтов

    • структуры - классы
    • stdio - iostream
  6. Стандартная библиотека убога
    • Отсутствует даже такой функционал, как вменяемая работа со строками и многомерные массивы
      • Юникод?

  7. Слабая типизация
    • способствует ошибкам
    • затрудняет отладку
    • const не дает абсолютно никаких гарантий
    • при этом система типов невероятно переусложенена
      • в основном из-за пунктов (2), (5) и (9)
      • медленная компиляция
      • частые внутренние ошибки в компиляторах

  8. объектая система убога
    • практически никакой интроспекции
      • отладка затруднена
    • передача объектов по значению
      • понятие идентичности объекта теряет смысл
      • добавляет сложностей в управлении памятью
      • добавляет сложностей при отладке
      • используется часто, по причине (2)
        • перерасход по памяти
        • медленная работа

    • множественное наследование неудобно в использовании
      • проблема ромба по дефолту не разрешается никак

    • исключения в конструкторах гарантированно влекут утечку памяти
      • исключения в деструкторах тоже, и просто утечку - еще в лучшем случае
        • коды ошибок деструкторы и конструкторы возвращать не могут
          • ошибки в них не обработать никак
            • поэтому ими стараются не пользоваться
              • раздувание кода

    • деструктор можно вызывать до выхода из блока кода, или до delete
      • гарантированная утечка ресурсов/сегфлот
      • это не предотвратить никак, деструктор обязан быть public

    • одиночная диспетчеризация
      • виртуальные методы в конструкторах не работают
      • реализована убого
        • pure virtual function call
        • сложности в случае с множественным наследованием
        • деструкторы обязаны быть виртуальными
          • по дефолту - не виртуальные

        • никаких интерфейсов, только классы

    • порядок инициализации статических членов классов не определен
    • private, public и protected не дают никаких гарантий сокрытия данных
      • к инкапсуляции же не относятся совершенно никак

    • отсутствие «свойств»
      • вынуждает городить getter'ы и setter'ы
        • раздувание кода
        • размывание интерфейса класса

    • неявно генерирумые конструкторы, деструкторы и операторы присваивания
    • «friend» нарушают инкапсуляцию
  9. шаблоны
    • очень сильно замедляют компиляцию
    • раздувание кода
    • обфускация кода
    • результат раскрытия плохо предсказуем
    • сложности в отладке
      • километровые и плохо читаемые сообщения об ошибках при компиляции

    • нарушают инкапсуляцию
      • обязаны содержать реализацию в заголовочных файлах

    • позволяют генерировать некорректный код
  10. исключения
    • отсутствие finally/unwind-protect
      • заставляет городить классы ради одних деструкторов
        • раздувание кода
        • медленная компиляция
        • медленная работа

    • конфликтуют с другими возможностями языка
      • конструкторы/деструкторы
      • ручное управление памятью

    • работают медленно
    • малофункциональны (ср. CL condition system)

По причинам 3, 4, 5, 9 и 10 C++ совершенно неприменим для системного и низкоуровневого программирования. А по причинами 1, 2, 5, 6, 7, 8, и, опять же, 9 и 10 - и для прикладного.

У C++ нет области применения.

stevejobs
()

Skype, сломаны груповые чаты, доставка сообщений в оффлайне, приём файлов, картинок.

Форум — General

С недавнего времени у меня сломались груповые чаты, просило перейти на новую версию чата но при нажатии на переход ничего не срабатывало. В общем мучался я так недели две, но пять минут гугления изменили мою жизнь к лучшему. В общем, для тех у кого сломаны груповые чаты:

https://community.skype.com/t5/Linux/Skype-group-chat-not-working-anymore/td-...

Для тех кому лень читать.

Пишем в любом чате

/msnp24

И рестартим скайп, в итоге всё начинает работать как ни в чём не бывало. И да, скайп «нинужно».

 , ,

kachan
()

Хорошие пособия по английской грамматике

Форум — Talks

ЛОР образовательный, посоветуй, по какой книжке освоить инглиш граммер? Хочется краткое и внятное пособие + упражнения на закрепление, желательно отдельным разделом.

 

selivan
()

Посоветуйте хауту для тренажёрного зала

Форум — Talks

Доброго времени суток

Сабж. Например, по разминке, разбивке нагрузки по разным занятиям, правильной работе с тренажёрами и т.д. Решил привести тушку в порядок.

 ,

router
()

Не работает отправка IGMP report

Форум — Admin

Имеется компьютер с убунтой 14.04, на котором запускается ffmpeg, принимающий поток через мультикаст. Через 260 секунд приём отваливается - это таймаут Group Membership Interval, то есть убунта не отправляет IGMP Report. При этом, если воткнуть ноут с дебианом в этот же порт коммутатора и запустить точно так же ffmpeg - всё работает. Хотелось бы знать, куда пнуть эту убунту, чтобы она не творила такой фигни? Вариант «заменить на дебиан/центось» уже приведён в исполнение, но на будущее хотелось бы знать.

 , ,

lizard
()

GCC аппаратный float для arm

Форум — Development

Есть вот такая функция для тестирования fpu:

float __attribute__ ((noinline)) testfpu(float a) {
	return __builtin_sqrtf(__builtin_sqrtf(__builtin_sqrtf(a)));
}
Для неё GCC генерирует следующий код:
/ (fcn) sym.testfpu (thumb) 80
|           ; CALL XREF from 0x08001cb6 (sym.testfpu)
|           0x08001c50      b1eec07a       vsqrt.f32 s14, s0
|           0x08001c54      08b5           push {r3, lr}
|           0x08001c56      b4ee477a       vcmp.f32 s14, s14
|           0x08001c5a      f1ee10fa       vmrs apsr_nzcv, fpscr
|       ,=< 0x08001c5e      0ed1           bne 0x8001c7e
|       |   ; JMP XREF from 0x08001c86 (sym.testfpu)
|      .--> 0x08001c60      f1eec77a       vsqrt.f32 s15, s14
|      ||   0x08001c64      f4ee677a       vcmp.f32 s15, s15
|      ||   0x08001c68      f1ee10fa       vmrs apsr_nzcv, fpscr
|     ,===< 0x08001c6c      11d1           bne 0x8001c92
|     |||   ; JMP XREF from 0x08001c9e (sym.testfpu)
|    .----> 0x08001c6e      b1eee70a       vsqrt.f32 s0, s15
|    ||||   0x08001c72      b4ee400a       vcmp.f32 s0, s0
|    ||||   0x08001c76      f1ee10fa       vmrs apsr_nzcv, fpscr
|   ,=====< 0x08001c7a      05d1           bne 0x8001c88
|   |||||   ; JMP XREF from 0x08001c90 (sym.testfpu)
|  .------> 0x08001c7c      08bd           pop {r3, pc}
|  |||||`-> 0x08001c7e      08f067f9       bl sym.sqrtf
|  |||||    0x08001c82      b0ee407a       vmov.f32 s14, s0
|  ||||`==< 0x08001c86      ebe7           b 0x8001c60
|  |`-----> 0x08001c88      b0ee670a       vmov.f32 s0, s15
|  | ||     0x08001c8c      08f060f9       bl sym.sqrtf
|  `======< 0x08001c90      f4e7           b 0x8001c7c
|    |`---> 0x08001c92      b0ee470a       vmov.f32 s0, s14
|    |      0x08001c96      08f05bf9       bl sym.sqrtf
|    |      0x08001c9a      f0ee407a       vmov.f32 s15, s0
\    `====< 0x08001c9e      e6e7           b 0x8001c6e

Настройки компилятора:
-O2 -mfpu=vfpv4-d16 -mfloat-abi=hard
Видно, что gcc успешно использует инструкцию vsqrt для вычисления квадратного корня. Но при этом после каждой инструкции вставляются некрасивые проверки с откатом на программную реализацию в случае возникновения ошибки. Как можно избавиться от этих проверок?

PS: Забавно, что без использования FPU код получается куда проще:

/ (fcn) sym.testfpu (thumb) 18
|           ; CALL XREF from 0x08001b30 (sym.testfpu)
|           0x08001b0c      08b5           push {r3, lr}
|           0x08001b0e      08f0fff8       bl sym.sqrtf
|           0x08001b12      08f0fdf8       bl sym.sqrtf
|           0x08001b16      bde80840       pop.w {r3, lr}
\       ,=< 0x08001b1a      08f0f9b8       b.w sym.sqrtf

 , ,

Selat
()

Как включить LTO

Форум — Development

При сборке модулей добавляю -flto -fno-fat-lto-objects, при вызове ld ничего не добавляю, не знаю что надо, результат.

arm-none-eabi-ld: /tmp/pmc/hal/adc.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/can.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/hal.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/pwm.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/hal/usart.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/ap.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/cml.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/lib.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/m.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/pmc.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/sh.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/task.o: plugin needed to handle lto object
arm-none-eabi-ld: /tmp/pmc/tel.o: plugin needed to handle lto object
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x2a): undefined reference to `halStart'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x2e): undefined reference to `halMain'
/tmp/pmc/hal/entry.o:(.vectors+0x8): undefined reference to `irqNMI'
/tmp/pmc/hal/entry.o:(.vectors+0xc): undefined reference to `irqHardFault'
/tmp/pmc/hal/entry.o:(.vectors+0x10): undefined reference to `irqMemoryFault'
/tmp/pmc/hal/entry.o:(.vectors+0x14): undefined reference to `irqBusFault'
/tmp/pmc/hal/entry.o:(.vectors+0x18): undefined reference to `irqUsageFault'
/tmp/pmc/hal/entry.o:(.vectors+0x2c): undefined reference to `irqSVCall'
/tmp/pmc/hal/entry.o:(.vectors+0x38): undefined reference to `irqPendSV'
/tmp/pmc/hal/entry.o:(.vectors+0x3c): undefined reference to `irqSysTick'
/tmp/pmc/hal/entry.o:(.vectors+0x78): undefined reference to `irqDMA1_Stream3'
/tmp/pmc/hal/entry.o:(.vectors+0x88): undefined reference to `irqADC'
/tmp/pmc/hal/entry.o:(.vectors+0x90): undefined reference to `irqCAN1_RX0'
/tmp/pmc/hal/entry.o:(.vectors+0x94): undefined reference to `irqCAN1_RX1'
/tmp/pmc/hal/entry.o:(.vectors+0x98): undefined reference to `irqCAN1_SCE'
/tmp/pmc/hal/entry.o:(.vectors+0xa4): undefined reference to `irqTIM1_UP_TIM10'
/tmp/pmc/hal/entry.o:(.vectors+0xdc): undefined reference to `irqUSART3'
Makefile:57: recipe for target '/tmp/pmc/pmc' failed
make: *** [/tmp/pmc/pmc] Error 1

Если вызвать gcc вместо прямого вызова ld то получаю проблемы со всяким стартовым кодом и библиотеками которые мне не нужны. Когда-то я и перешел на вызов ld чтобы не иметь этих проблем.

/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans0.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans0.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans1.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans1.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans2.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans2.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans3.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans3.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans4.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans4.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans5.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans5.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans6.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans6.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans7.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans7.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans8.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans8.ltrans.o
/usr/libexec/gcc/arm-none-eabi/ld: error: /tmp/ccs6XVoG.ltrans9.ltrans.o uses VFP register arguments, /tmp/pmc/pmc.1.o does not
/usr/libexec/gcc/arm-none-eabi/ld: failed to merge target specific data of file /tmp/ccs6XVoG.ltrans9.ltrans.o
/usr/lib/gcc/arm-none-eabi/5.3.0/../../../../arm-none-eabi/lib/crt0.o: In function `_start':
/var/tmp/portage/cross-arm-none-eabi/newlib-2.4.0/work/newlib-2.4.0/newlib/libc/sys/arm/crt0.S:403: undefined reference to `main'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x34): undefined reference to `ldSdata'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x38): undefined reference to `ldEtext'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x3c): undefined reference to `ldEdata'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x40): undefined reference to `ldSbss'
/tmp/pmc/hal/entry.o: In function `__iRbssComp':
(.text+0x44): undefined reference to `ldEbss'
/tmp/pmc/hal/entry.o:(.vectors+0x0): undefined reference to `ldStack'
/tmp/ccs6XVoG.ltrans4.ltrans.o: In function `halStart':
<artificial>:(.text+0x9c0): undefined reference to `ldSvectors'
collect2: error: ld returned 1 exit status
Makefile:57: recipe for target '/tmp/pmc/pmc' failed
make: *** [/tmp/pmc/pmc] Error 1

Undefined reference это понятно, надо как-то объяснять, что функция вызывается из вне и выбрасывать ее нельзя.

В первом случае похоже никакого LTO нет, судя по времени работы ld и сообщениях о плагинах, но почему есть undefined reference? Во втором не знаю как сделать, чтобы компоновки не было, а только бы произошла оптимизация и генерация объектного кода, дальше я бы сам вызвал ld как мне надо.

Исходный Makefile.

 ,

amaora
()

Makefile - исходный код в одной директории, результаты сборки - в другой.

Форум — Development

Здравствуйте. Написал простенький Makefile. При его вызове все исходники из директории ./src собираются в файл ./bin/firmware.elf. Сейчас объектные файлы остаются в директории ./src. Что поправить, чтобы объектные файлы компилировались в ./bin ? Сейчас:

$ tree
.
├── bin
│   └── firmware.elf
├── Makefile
└── src
    ├── blink.c
    ├── blink.h
    ├── blink.o
    ├── main.c
    └── main.o
Хочу:
$ tree
.
├── bin
│   ├── firmware.elf
│   ├── blink.o
│   └── main.o
├── Makefile
└── src
    ├── blink.c
    ├── blink.h
    └── main.с
Makefile
TARGET	= firmware.elf
DEVICE  = msp430f5529

SRC_DIR = ./src
BIN_DIR = ./bin

# Каталог компилятора
GCC_DIR = ~/ti/gcc/bin
# Путь до компилятора и утилит
CC = $(GCC_DIR)/msp430-elf-gcc
SIZE = $(GCC_DIR)/msp430-elf-size
# Путь до программатора
MSPDEBUG = /usr/local/bin/mspdebug
# Путь до системных заголовочных файлов
SUPPORT_FILE_DIR = ~/ti/gcc/include

# Ключи компилятора
CFLAGS = -I $(SUPPORT_FILE_DIR) -mmcu=$(DEVICE) -O2 -g -fdata-sections -ffunction-sections -Wall -std=gnu99
# Ключи линкера
LFLAGS = -L $(SUPPORT_FILE_DIR) -T $(DEVICE).ld -Wl,-gc-sections

###############################################################################
.PHONY: clean

# Получаем списоки файлов
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS 	= $(SRCS:.c=.o)

all: $(TARGET)
	$(SIZE) $(BIN_DIR)/$(TARGET)
	

$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) $(LFLAGS) -o $(BIN_DIR)/$(TARGET) $(OBJS) 
 
.c.o:
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	rm -rf $(BIN_DIR)/$(TARGET) $(OBJS) 

program: all
	$(MSPDEBUG) tilib "prog $(BIN_DIR)/$(TARGET) reset"

 

arhiv_6
()

Си Среднее арифметическое больших чисел

Форум — Development

Нужно найти среднее арифметическое большого количества относительно больших чисел. Пока задача своится к поиску среднего арифметического 30000 чисел, каждое из которых примерно равно 20000 (+-500). Данные поступают из файла.

Самое простое - писать в массив, потом сумму делить на количество. Сумму хранить, разумеется, в double. Но, так как файл может быть произвольной длины, теоретически могут загрузить и файл раз в 100 больше. Есть желание использовать какой-нибудь более продвинутый алгоритм, пусть даже более затратный с точки зрения процессора. Знаете какой-нибудь такой?

 ,

JANB
()

Хочу съездить в Молдову, Приднестровье

Форум — Talks

После поездки во Львов решил съездить в Молдову, летом . Dorif, посоветуй, что в Молдове посмотреть можно? В Тирасполь стоит ехать?

 

int13h
()

bash скрипт для мониторинга iptv

Форум — General

Появилась задача сделать мозаику Мультикаст каналов.

Нашел статьюСюда!, не понятно несколько вещей: 1.У меня не работает скрипт

#!/bin/bash
 
localaddr=192.168.55.70
service=ffmpeg0
 
ABSOLUTE_FILENAME=`readlink -e "$0"`
DIRECTORY=`dirname "$ABSOLUTE_FILENAME"`
cd $DIRECTORY
 
SWAP=/var/www/sources/mosaic/udp
 
while [ 1 ]
do
  FILE=$DIRECTORY/ipchannels  # файл с каналами в каждой строчке "123;Моя планета;239.233.2.10;\n"
 
  j=1
  n=15 # по 15 каналов за раз
  ti=$(/bin/date +%s)
 
  exec 10 /dev/null
          then
           killall $service
          fi
      fi
 
      if ! [ -d $SWAP/$chid ]
      then
          mkdir $SWAP/$chid
          chmod 777 $SWAP/$chid
      fi
 
   ./$service -loglevel panic -timelimit 13 -i udp://$chmrl:1234?localaddr=$localaddr -f mjpeg -vframes 1 -s 108x86 $SWAP/$chid/$ti.jpg &
 
   let "j++"
  done
 
  rm $SWAP/update
  echo "$ti" >>$SWAP/update
 
done
 
exit 0;

.

При выполнении пишет : ./parse.sh: строка 21: ошибка синтаксиса около неожиданной лексемы `then' ./parse.sh: строка 21: ` then'

2. Как этот скрипт связан с сайтом?

Да, я не силен в скриптах, и языках, но встала острая необходимость, вот и решил обратиться к умным людям.

 , ,

sandr502
()

Упаковать блоб в ro data секцию ELF и PE

Форум — Development

Имеются табличные данные, объемом с десяток мегабайт. Хочется таскать их прямо в исполнимом файле, влинкованными.

Самый простой вариант — вывалить данные в исходник на Си вида «const char my_data[] = {0x4, 0x9, 0x10, 0x3, ....};» и прогнать через компилятор и линковщик. Если бы табличка была размером в пару килобайт, я на этом бы и успокоился. Но вот поступать так с десятком мегабайт? Существует для этого какой-то менее костыльный способ?

 , , ,

Manhunt
()

ноут с i7+16gb ОЗУ с ips экраном до 2кг...

Форум — Linux-hardware

Всем доброго времени суток. Уже давно хочу себе найти замену своему Dell 3360. Вроде обыскал весь рынок, но никак не могу найти того, чего душа желает. А хотелось бы:

  • Core i7 на Haswell.
  • Хороший IPS экран, FHD (1920x1080+).
  • Ethernet port.
  • поддержка 16GB DualChannel памяти.
  • mSata порт + Sata 2.5".
  • до 2кг, 11.6"-14".
  • время автономной работы - НЕ важно.
  • поддержка linux. - не хочу обнаружить неработающий мультитач, вебку, либо что-то другое.

Варианты:

  • System76 - нету сервисных центров, плохие отзывы о клаве, пластик...
  • Маки - цена кусается за конфигурацию 16Gb + Core i7 + 512GB, придется чем-то жертвовать, а также вечно таскать с собой переходник на Ethernet.
  • Что-то из этого списка, к сожалению почти у всех макс 8GB рамки

Если у кого-то появится вопрос «почему именно такая конфигурация»:

  • 16Gb ОЗУ - работаю с джавой, она отъедает не мало, 2-3 виртуалки, и хромиум обычно с 15+ вкладок. Для нормальной работы нужен или своп с тормозами, либо постоянно следить за памятью.
  • Экран - собственно из-за него и меняю свой Dell с угрюмыми оттенками черного, отсутсвия углов обзора и т.д. Слава Богу, со зрением у меня пока все впорядке и большой DPI не заставляет прищуриваться на мелкие объекты. А вот большие панели, которые занимают треть экрана по высоте вместо полотна кода, - напрягают.
  • Ethernet порт, приятный бонус, который почему-то упускают в ультрабуках. Не знаю как другим, но меня напрягает таскать за собой кучу переходников. А когда их не возьмешь, то каким-то боком выкручиваться.
  • Вес - я ноут очень часто беру с собой (с работы домой, к друзьям ...) Везде есть розетка. На автономность не сильно обращаю внимание, а вот носить 3кг не очень приятно (учитывая, что ноут скорее всего не единственная вещь, которую переносишь с собой)
  • mSata+2.5"sata. - Хотелось бы в ноутбуке иметь SSD+HDD. Один для ОС, второй для хранения данных ( фильмов, музыки и т.д.) Хотя, если такой фильтр порежит все варианты, возможно дешевле будет просто установить SSD на 1TB в единственный разъем.

Пока больше всего склоняюсь к System76, так как никак даже похожее найти не смог. Возможно кто-то себе уже приобрел galago Ultra pro - подскажет как с гарантией.
Вроде ничего сверхестественно не хочу, а на рынке - пусто по своему фильтру. Буду очень благодарен, если найдется хорошая моделька.

 

deathangel908
()

приехал mb77.07

Форум — Talks

Таки после новогодних праздников до меня доехал сабж.

Теперь можно сказать хейтерам и сомневающмся, что сабж реально существует не только на бумаге (а то были и такие;).

Как выздоровлею, напишу более полный обзор.

http://vltc.net.eu.org/owncloud/public.php?service=files&t=8b3ca145829a27...

UPD: я посмотрел, какой там i2c контроллер, оказывается http://opencores.org/project,i2c. Таки opencores действительно используются! Что не может не радовать

root@shadow:/sys/class/i2c-dev/i2c-0/device/device# ls -l
total 0
lrwxrwxrwx 1 root root    0 Jan  1 00:03 driver -> ../../../../bus/platform/drivers/ocores-i2c

UPD2: небольшой обзор https://www.youtube.com/watch?v=9h-_h1zeIeg

 

cvs-255
()